#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
autor: João Pedro Martins Luís
data: 10 de junho de 2012

Class Main

''' 

import KDtree
 
def main():
    
    print "Utilização de Listas Listas ligadas (stack)"
    KDtree.Main()
    print "#########Criação de uma árvoreBinária sem utilização de stack##########"
    
    #lista de nos
    nos = [None for k in range(9)]
    
    #inicializaçao da lista de nós
    nos[0] = KDtree.No(11, "José Socrates")
    nos[1] = KDtree.No(2, "Paulo portas")
    nos[2] = KDtree.No(14, "Pedro Passos Coelho")
    nos[3] = KDtree.No(1, "Cavaco Silva")
    nos[4] = KDtree.No(7, "Teixeira Dos Santos")
    nos[5] = KDtree.No(15, "Manuela Ferreira Leite")
    nos[6] = KDtree.No(5, "Vitor Gaspar")
    nos[7] = KDtree.No(8, "Alberto João Jardim")
    nos[8] = KDtree.No(4, "Jorge Sampaio")
    arv = KDtree.ArvorePesquisaBinaria()
    
    #inserir nós na arvore
    arv.insert(nos[0])
    arv.insert(nos[1])
    arv.insert(nos[2])
    arv.insert(nos[3])
    arv.insert(nos[4])
    arv.insert(nos[5])
    arv.insert(nos[6])
    arv.insert(nos[7])
    arv.insert(nos[8])
   
    
    #imprimir a arvore, ja ordenada
    print
    print "INORDER"
    lista = []
    arv.inorder_walk(arv.root, lista)
    for x in lista:
        print x
    
    #eleminar nó a arvore RedBlack
    print
    print "Del"
    arv.delete(nos[3])    
    #voltar a imprimir a arvore ja com o 
    #nó eliminado
    print "INORDER"
    lista = []
    arv.inorder_walk(arv.root, lista)
    for x in lista:
        print x
        
    #Fazer a pesquisa do nó
    print "PESQUISA"
    print arv.search(arv.root, 5)
    pass
    
    #procurar vizinhos do nó
    print "PESQUISA por um vizinho "
    print arv.searchNeighbor(arv.root, 5)
    pass
    print "MINIMO"
    print arv.minimum(arv.root)
    
    print "MAXIMO"
    print arv.maximum(arv.root)
    
    print "SUCESSOR"
    print arv.sucessor(nos[7])
 
main()